// 将价格number输入转换为文字，例如，输入“123”，输出“一百三十一”
// 注意边界处理，中间和末尾的“零”



function numberToChinese(num) {
  const numArray = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
  const unitArray = ['', '十', '百', '千', '万', '十', '百', '千', '亿'];

  // 转换为字符串，方便逐位处理
  num = String(num);
  let result = '';
  const len = num.length;  // 获取数字的位数

  // 遍历数字字符串的每一位
  for (let i = 0; i < len; i++) {
    const digit = parseInt(num[i]);

    // 计算当前位对应的 单位索引
    const unitIndex = len - i - 1;

    // 如果当前位数字为 0
    if (digit === 0) {
      // 当前位不是最后一位，且下一位数字不为 0
      if (i < len - 1 && parseInt(num[i + 1]) !== 0) {
        // 添加一个 “零” 到结果字符串中
        result += numArray[digit];
      }
    } else {
      // 如果当前位数字不为 0，将对应的中文数字和单位添加到结果字符串中
      result += numArray[digit] + unitArray[unitIndex];
    }
  }

  // 使用正则表达式去除结果字符串末尾多余的 “零”
  // +：量词，表示前面的元素（也就是 “零”）可以出现一次或者多次。
  // $：锚点，代表字符串的结尾。
  result = result.replace(/零+$/, '');
  // 使用正则表达式处理以 “一十” 开头的情况，将其简化为 “十”
  // ^：锚点，代表字符串的开头
  result = result.replace(/^一十/, '十');

  // 返回最终转换后的中文大写结果
  return result;
}

// 测试示例，定义一个要转换的数字
const price = 123;
// 调用 numberToChinese 函数进行转换，并将结果打印到控制台
console.log(numberToChinese(price));